package com.firefly.app.biz.enums;


/**
 * 返回码枚举(由前置，代理等返回)
 * 
 * @author David.Huang
 */
public enum ReturnCodeEnum {
    
	/** 成功 */
	SUCCESS("00", "成功"),

	/** 查发卡行 */
	_01("01", "很抱歉，系统暂不支持您所使用的银行卡，请使用其他银行卡"),

	/** 查发卡行的特殊条件 */
	_02("02", "查发卡行的特殊条件"),

	/** 无效商户 */
	_03("03", "无效商户"),

	/** 没收卡 */
	_04("04", "很抱歉，系统暂不支持您所使用的银行卡，请使用其他银行卡"),

	/** 不予承兑 */
	_05("05", "很抱歉，系统暂不支持您所使用的银行卡，请使用其他银行卡"),

	/** 出错 */
	_06("06", "很抱歉，交易出错，请重试"),

	/** 特殊条件下没收卡 */
	_07("07", "特殊条件下没收卡"),

	/** 请求正在处理中 */
	_09("09", "请求正在处理中"),

	/** 无效交易 */
	_12("12", "很抱歉，交易出错，请重试"),

	/** 无效金额 */
	_13("13", "很抱歉，交易金额输入错误，请重试"),

	/** 无效卡号 */
	_14("14", "很抱歉，交易卡号无效，请重试"),

	/** 无此发卡行 */
	_15("15", "很抱歉，系统暂不支持您所使用的银行卡，请使用其他银行卡"),

	/** 重新送入交易 */
	_19("19", "重新送入交易"),

	/** 无效应答 */
	_20("20", "无效应答"),

	/** 不做任何处理 */
	_21("21", "很抱歉，交易出错，请重试"),

	/** 怀疑操作有误 */
	_22("22", "怀疑操作有误"),

	/** 不可接受的交易费 */
	_23("23", "不可接受的交易费"),

	/** 未能找到文件上记录 */
	_25("25", "未能找到文件上记录"),

	/** 格式错误 */
	_30("30", "很抱歉，交易出错，请重试"),

	/** 银联不支持的银行 */
	_31("31", "银联不支持的银行"),

	/** 过期的卡 */
	_33("33", "过期的卡"),

	/** 有作弊嫌疑 */
	_34("34", "很抱歉，交易出错，请重试"),

	/** 受卡方与安全保密部门联系 */
	_35("35", "受卡方与安全保密部门联系"),

	/** 受限制的卡 */
	_36("36", "很抱歉，所使用的银行卡暂不支持，请换使用其他银行卡"),

	/** 受卡方呼受理方安全保密部门(没收卡) */
	_37("37", "受卡方呼受理方安全保密部门(没收卡)"),

	/** 超过允许的PIN试输入 */
	_38("38", "很抱歉，您输错的密码次数过多"),

	/** 无此信用卡帐户 */
	_39("39", "很抱歉，所使用的银行卡暂不支持，请换使用其他银行卡"),

	/** 请求的功能尚不支持 */
	_40("40", "很抱歉，该业务尚不支持，请使用本终端其他功能"),

	/** 丢失卡 */
	_41("41", "很抱歉，系统暂不支持您所使用的银行卡，请使用其他银行卡"),

	/** 无此帐户 */
	_42("42", "无此帐户"),

	/** 被窃卡 */
	_43("43", "被窃卡"),

	/** 无此投资帐户 */
	_44("44", "无此投资帐户"),

	/** 无足够的存款 */
	BALANCE_NOT_ENOUGH("51", "很抱歉，余额不足，请使用其他支付方式"),

	/** 无此支票账户 */
	_52("52", "无此支票账户"),

	/** 无此储蓄卡账户 */
	_53("53", "无此储蓄卡账户"),

	/** 过期的卡 */
	_54("54", "很抱歉，银行卡已过期，请使用其他银行卡"),

	/** 不正确的PIN */
	PASSWORD_ERROR("55", "密码输入错误，请重试"),

	/** 无此卡记录 */
	_56("56", "很抱歉，所使用的银行卡暂不支持，请换使用其他银行卡"),

	/** 不允许持卡人进行的交易 */
	_57("57", "很抱歉，系统暂不支持您所使用的银行卡，请换使用其他银行卡"),

	/** 不允许终端进行的交易 */
	_58("58", "不允许终端进行的交易"),

	/** 有作弊嫌疑 */
	_59("59", "交易非法，请重试"),

	/** 受卡方与安全保密部门联系 */
	_60("60", "受卡方与安全保密部门联系"),

	/** 超出取款金额限制 */
	_61("61", "很抱歉，您已超过最大转账金额"),

	/** 受限制的卡 */
	_62("62", "很抱歉，所使用的银行卡暂不支持，请换使用其他银行卡"),

	/** 违反安全保密规定 */
	_63("63", "违反安全保密规定"),

	/** 原始金额不正确 */
	_64("64", "原始金额不正确"),

	/** 超出取款次数限制 */
	_65("65", "很抱歉，您已超过最大转账次数"),

	/** 受卡方呼受理方安全保密部门 */
	_66("66", "受卡方呼受理方安全保密部门"),

	/** 捕捉（没收卡） */
	_67("67", "很抱歉，交易出错，请重试"),

	/** 收到的回答太迟 */
	_68("68", "很抱歉，交易出错，请重试"),

	/** 允许的输入PIN次数超限 */
	_75("75", "很抱歉，您输错的密码次数过多"),

	/** 需要向网络中心签到 */
	_77("77", "需要向网络中心签到"),

	/** 脱机交易对帐不平 */
	_79("79", "脱机交易对帐不平"),

	/** 日期切换正在处理 */
	_90("90", "很抱歉，系统繁忙，请稍候再试"),

	/** 发卡行或银联不能操作 */
	_91("91", "很抱歉，系统繁忙，请稍候再试"),

	/** 金融机构或中间网络设施找不到或无法达到 */
	_92("92", "很抱歉，系统异常，请稍候再试"),

	/** 交易违法、不能完成 */
	_93("93", "交易非法，请重试"),

	/** 重复交易 */
	_94("94", "很抱歉，系统繁忙，请稍候再试"),

	/** 调节控制错 */
	_95("95", "调节控制错"),

	/** 系统异常、失效 */
	_96("96", "很抱歉，系统异常，请稍候再试"),

	/** 无效终端 */
	_97("97", "很抱歉，系统异常，请稍候再试"),

	/** 银联收不到发卡行应答 */
	NO_RESPONSE("98", "很抱歉，系统繁忙，请稍候再试"),

	/** PIN格式错 */
	PIN_ERROR("99", "很抱歉，系统繁忙，请稍候再试"),

	/** MAC校验错 */
	MAC_ERROR("A0", "很抱歉，系统繁忙，请稍候再试"),

	/** 请求过载拒绝服务 */
	REQUEST_OVERLOAD("B0", "请求过载拒绝服务"),

	/** 未知的交易流程请求 */
	UNKNOWN_TRANS_REQUEST("B1", "未知的交易流程请求"),

	/** 终端签到超时 */
	SIGN_TIMEOUT("B2", "终端签到超时"),

	/** 批次号不匹配 */
	BATCH_NO_INVALID("B3", "批次号不匹配"),

	B4("B4", "结算不平"),
	B5("B5", "已结算"), 
	B6("B6", "结算编号溢出"),
	B7("B7", "报文解析异常"), 
	B8("B8", "终端地区码错误"), 
	EF("EF", "系统异常"),
	EG("EG", "系统通讯超时"), 
	EH("EH","手机号段不支持或输入有误"),
	EI("EI", "流水号重复"),
	F1("F1", "很抱歉，此次交易失败，请重试"),
	F2("F2", "购买结果未知"), 
	F3("F3", "查询期次不存在，请输入其他期次"),
	F4("F4", "身份证号码不合法"), 
	F5("F5", "您投注的号码格式有误，请重新输入"),
	F6("F6", "超过限制数量"), 
	F7("F7", "超过倍率数量"), 
	T1("T1", "系统异常"), 
	T2("T2", "无此订单号"), 
	T3("T3", "输入数据有空值"),
	T4("T4", "门票没有找到"),
	T5("T5", "门票金额不正确"), 
	T6("T6", "入园日期不正确"),
	T7("T7", "订单无效或者已经兑换"), 
	T8("T8", "不在有效期范围内"), 
	T9("T9", "入园日期的前1天开始不允许门票转让"), 
	TA("TA", "身份证不匹配"), 
	TB("TB", "手机号不匹配"), 
	TC("TC", "门票数量数据格式错误"),
	TD("TD", "前置流水号重复"),
	TE("TE", "订单状态为不能转让"),
	TF("TF", "取票景点不在票的所属景点"),
	P1("P1", "您的账单已缴费成功，无需再次缴费"),
	P2("P2", "未缴费"), 
	P3("P3","补打超限"),
	P6("P6", "用户号码无效"), 
	P7("P7", "该账单无欠费"), 
	OP0("OP0", "订单已支付"), 
	Co1("Co1", "正在更新数据，请稍候再试"), 
	C1("C1", "系统异常"),
	C2("C2", "很抱歉，系统繁忙，请稍候再试"),
	C3("C3", "很抱歉，系统繁忙，请稍候再试"), 
	C4("C4", "流水号重复"), 
	C5("C5", "金额有误"), 
	C6("C6", "本时段剩余票数量不足"),
	C7("C7", "门票库存不足"), 
	I5("I5", "库存不足"), 
	I8("I8","每个身份证只能免费索取一次本产品，请选择购买其它产品"), 
	J1("J1", "很抱歉，电信积分抵扣失败，请重试"), 
	M1("M1", "很抱歉，系统繁忙，请稍候再试"), 
	U1("U1", "银联优惠券绑定失败"),

	// -----------------顺硕服务端错误码-------------//
	/** 打包失败 */
	PACK_ERROR("SYT801", "打包失败"),

	/** 发送数据失败 */
	SEND_DATA_ERROR("SYT802", "发送数据失败"),

	/** 发送数据相应错误 */
	SEND_DATA_RESPONSE_ERROR("SYT803", "发送数据响应错误"),

	/** 福彩期次获取失败 */
	GET_LOTTERY_PERIOD_ERROR("SYT804", "福彩期次获取失败"),

	/** 福彩期次获取失败 */
	MOVIE_PLAY_ITEM_EXPIRED("SYT805", "电影场次过期"),

	/** 顺硕用户注册失败 */
	AXUSER_REG_ERROR("SYT806", "注册失败"),

	/** 顺硕用户登陆失败 */
	AXUSER_LOGIN_ERROR("SYT807", "顺硕用户登陆失败"),

	/** 顺硕用户重置密码失败 */
	AXUSER_RESET_PASSWORD_ERROR("SYT808", "重置密码失败"),

	/** 顺硕用户修改密码失败 */
	AXUSER_CHANGE_PASSWORD_ERROR("SYT809", "修改密码失败"),

	/** 顺硕用户修改手机号失败 */
	AXUSER_CHANGE_MOBILE_ERROR("SYT810", "修改手机号失败"),

	/** 顺硕用户实名认证失败 */
	AXUSER_ADDIDCARDINFO_ERROR("SYT811", "实名认证失败"),

	/** 顺硕用户查询详细积分失败 */
	AXUSER_QUERY_DETAIL_ERROR("SYT812", "顺硕用户查询详细积分失败"),

	/** 顺硕用户绑定交通卡失败 */
	//AXUSER_BINDJTKNO_ERROR("SYT813", "实名认证失败"),

	/** 顺硕用户查询积分失败 */
	AXUSER_QUERY_ERROR("SYT814", "顺硕用户查询积分失败"),
	
	AXUSER_BIND_BANKCARD_ERROR("SYT815", "顺硕用户绑定银行卡失败"),
	
	AXUSER_UNBIND_BANKCARD_ERROR("SYT816", "顺硕用户解绑银行卡失败"),
	
	AXUSER_AUTOCASHSIGN_ERROR("SYT817", "顺硕用户自动提现设置失败"),
	
	AXUSER_SECURITYSIGN_ERROR("SYT818", "顺硕用户隐私内容设置失败"),
	
	SYTUSER_QUERYUSERINFO_ERROR("SYT819", "顺硕用户查询信息失败"),
	
	AXUSER_QUERYWALLETDET_ERROR("SYT820", "顺硕用户现金账户明细查询失败"),
	
	AXUSER_WITHDRAW_ERROR("SYT821", "顺硕用户现金账户提现失败"),

	/** 顺硕会员注册,用户存在,已经实名 */
	AXUSER_REG_USEREXIST_HASIDCARD("E1", "用户存在已实名"),

	/** 顺硕会员注册,用户存在,未实名 */
	AXUSER_REG_USEREXIST_NOIDCARD("E2", "用户存在未实名"),
	
	AXUSER_MD5_ERROR("E4", "MD5校验错误"),
	AXUSER_MULTIPLE_NO("E5", "流水号重复"),
	AXUSER_AMOUNT_ERROR("E6", "金额异常"),
	AXUSER_NOT_ENOUGH("E7", "提现余额不足"),
	AXUSER_BANK_CARD_NOT_EXIST("E8", "银行卡信息不存在"),
	AXUSER_USER_NOT_EXIST("E9", "用户不存在"),
	
	/** 验证码错误 */
	AXUSER_VALID_CODE_ERROR("C0", "验证码错误"),

	// -----------------顺硕前端错误码-------------//
	/** 硬件错误 */
	DEVICE_ERROR("SYT901", "硬件错误"),

	/** 前置的工作密钥错误 */
	FRONT_WORK_KEY_ERROR("SYT902", "前置的工作密钥错误"),

	/** 前置的MAC错误 */
	FRONT_MAC_ERROR("SYT903", "前置的MAC错误"),

	/** Chinapay的工作密钥错误 */
	CP_WORK_KEY_ERROR("SYT904", "Chinapay的工作密钥错误"),

	/** Chinapay的MAC错误 */
	CP_MAC_ERROR("SYT905", "Chinapay的MAC错误"),

	/** 读卡错误 */
	READ_CARD_ERROR("SYT906", "读卡错误"),

	/** 读密码错误 */
	READ_PWD_ERROR("SYT907", "读密码错误"),

	/** MAC计算错误 */
	CALC_MAC_ERROR("SYT908", "MAC计算错误"),

	/** 计时器异常 */
	TIMER_ERROR("SYT909", "计时器异常"),

	/** 页面初始化异常 */
	PAGE_INIT_ERROR("SYT910", "页面初始化异常"),

	/** 没有找到卡类型 */
	CARD_KIND_NOT_FOUND("SYT911", "没有找到卡类型"),

	/** 错误的卡类型 */
	CARD_KIND_ERROR("SYT912", "错误的卡类型"),

	/** 交易失败 */
	TRANS_FAILED("SYT913", "交易失败"),

	/** 积分查询失败 */
	CTPOINT_QUERY_FAILED("SYT914", "电信积分查询失败"),

	// -----------------交罚错误码-------------//
	TRAFFIC_FINES_QUERY_VIOLATION_ERROR("TF01","交罚查询违章信息失败"),
	TRAFFIC_FINES_CREATE_ORDER_ERROR("TF02","交罚创建订单失败"),
	TRAFFIC_FINES_QUERY_HISTORY_ERROR("TF03","交罚查询历史失败"),
	
	
	// -----------------顺硕系统错误码-------------//

	/** 网络通讯失败 */
	NETWORK_CONNECT_ERROR("SYT992", "网络通讯失败"),

	/** 签到失败 */
	SING_FAILED("SYT993", "签到失败"),

	/** 参数错误 */
	PARAM_ERROR("SYT994", "参数错误"),

	/** 页面加载失败 */
	PAGE_LOAD_ERROR("SYT995", "页面加载失败"),

	/** 系统错误 */
	SYS_ERROR("SYT996", "系统错误"),

	/** JS脚本异常 */
	JS_EXCEPTION("SYT997", "JS脚本异常"),

	/** 自定义错误 */
	CUSTOM_ERROR("SYT998", "自定义错误"),

	/** 未知返回码 */
	UNKNOWN("SYT999", "未知错误");

	/** 代码 */
	private final String code;

	/** 说明 */
	private final String desc;

	/**
	 * 构造方法
	 * 
	 * @param code 代码
	 * @param desc 说明
	 */
	ReturnCodeEnum(String code, String desc) {
		this.code = code;
		this.desc = desc;
	}

	public String getCode() {
		return code;
	}

	public String getDesc() {
		return desc;
	}

	/**
	 * 根据代码获得描述
	 * 
	 * @param code 代码
	 * @return 描述
	 */
	public static String getDescByCode(String code) {
		String v = null;
		if (code != null) {
			ReturnCodeEnum[] enumArray = ReturnCodeEnum.values();
			for (ReturnCodeEnum enumItem : enumArray) {
				if (code.equals(enumItem.getCode())) {
					v = enumItem.getDesc();
					break;
				}
			}
		}
		// 没有找到错误信息,返回未知错误
		if (v == null) {
			v = ReturnCodeEnum.UNKNOWN.desc;
		}
		return v;
	}
}
